rm(list = ls())
library(mombf)
library(dplyr)
library(tidyr)
library(ggsci)
library(hdm)
library(glmnet)
library(ggplot2)
library(tidyverse)
library(HDCI)
library(gridExtra)
library(pROC)
library("adapt4pv")
library(readr)
library(dplyr)
library(knitr)
library(kableExtra)
library(stringr)
library(data.table)
library(stringr)
library(readr)
library(tidyverse)
# Load data
DIR <- 'data/'
DIR <- '/Users/carlosperezricardo/Downloads/'
raw_train <- read.csv(paste0(DIR,'realestate_train.csv'))
raw_test <- read.csv(paste0(DIR,'realestate_test.csv'))
n_addresses <- 10
dummy_addresses <- T
dummy_subdistricts <- T
dummy_coordinates <- T
qcuts <- 50
drop_prev_prices <- T
log_price <- T
# Filter addresses
address_counts <- raw_train %>% count(address_simple)
selected_addresses <- address_counts[address_counts$n > n_addresses, ]$address_simple
cat('Train size before', dim(raw_train), ': after', dim(raw_train[raw_train$address_simple %in% selected_addresses, ]))
Train size before 23770 478 : after 23432 478
raw_train <- raw_train[raw_train$address_simple %in% selected_addresses, ]
cat('Train size before', dim(raw_test), ': after', dim(raw_test[raw_test$address_simple %in% selected_addresses, ]))
Train size before 3200 478 : after 2941 478
raw_test <- raw_test[raw_test$address_simple %in% selected_addresses, ]
generate_dummies <- function(train, test, column) {
# Combine train and test
combined_data <- rbind(train, test)
# Creating dummy variables (assuming 'category' is your categorical column)
combined_data_dummy <- model.matrix(~ get(column) - 1, combined_data)
col_names <- stringr::str_replace(colnames(combined_data_dummy), "get\\(column\\)", paste0(column, '_'))
#print(col_names)
colnames(combined_data_dummy) <- col_names
# Splitting back into training and testing sets
train_rows <- nrow(train)
x_train_dummy <- combined_data_dummy[1:train_rows, ]
x_test_dummy <- combined_data_dummy[(train_rows + 1):nrow(combined_data_dummy), ]
# Add the dummy variables to the original dataframes
train <- cbind(train, x_train_dummy)
test <- cbind(test, x_test_dummy)
return(list(train = train, test = test))
}
if (dummy_addresses) {
result <- generate_dummies(raw_train, raw_test, 'address_simple')
raw_train <- result$train
raw_test <- result$test
}
obtain_subdistrict <- function(df) {
df$subdistrict <- sapply(strsplit(df$address_simple, ",\\s*"), function(x) x[[2]])
df[df$subdistrict == 'Dubai', 'subdistrict'] <- sapply(strsplit(df[df$subdistrict == 'Dubai', 'address_simple'], ",\\s*"), function(x) x[[1]])
return(df)
}
if (dummy_subdistricts) {
raw_train <- obtain_subdistrict(raw_train)
raw_test <- obtain_subdistrict(raw_test)
result <- generate_dummies(raw_train, raw_test, 'subdistrict')
raw_train <- result$train
raw_test <- result$test
}
do_quantiles <- function(data, quantiles, prefix) {
cuts <- cut(data, quantiles, include.lowest = T)
cuts <- paste0(prefix, cuts)
return(cuts)
}
combined_data <- rbind(raw_train, raw_test)
# Lat
quantiles <- unique(quantile(combined_data$lat, 0:qcuts/qcuts))
raw_train$lat_cuts <- do_quantiles(raw_train$lat, quantiles, 'lat_')
raw_test$lat_cuts <- do_quantiles(raw_test$lat, quantiles, 'lat_')
# Lon
quantiles <- unique(quantile(combined_data$lon, 0:qcuts/qcuts))
raw_train$lon_cuts <- do_quantiles(raw_train$lon, quantiles, 'lon_')
raw_test$lon_cuts <- do_quantiles(raw_test$lon, quantiles, 'lon_')
if (dummy_coordinates) {
# Lat
result <- generate_dummies(raw_train, raw_test, 'lat_cuts')
raw_train <- result$train
raw_test <- result$test
# Lon
result <- generate_dummies(raw_train, raw_test, 'lon_cuts')
raw_train <- result$train
raw_test <- result$test
}
test <- raw_test
train <-raw_train
# Convert date to numeric
train$date_added <- as.Date(train$date_added)
# Keep numeric columns
numeric <- sapply(train, is.numeric)
train <- train[, numeric]
test <- test[, numeric]
# Remove columns with 0 variance
test= test[,apply(test, 2, var) > 0] #remove columns with 0 variance
train= train[,apply(train, 2, var) > 0] #remove columns with 0 variance
cat(dim(train), dim(test))
23432 894 2941 877
# To have same columns in train and test
train <- train[, intersect(names(train), names(test))]
test <- test[, intersect(names(train), names(test))]
cat(dim(train), dim(test))
23432 876 2941 876
# Split into X and Y for scaling
x_train <- select(train, -price)
num_scale <- 100000 # to make weights more interpretable
y_train_orig <- train$price/num_scale
if (log_price) {
y_train <- log10(train$price/num_scale)
} else{
y_train <- train$price/num_scale
}
x_test <- select(test, -price)
y_test_orig <- test$price/num_scale
if (log_price) {
y_test <- log10(test$price/num_scale)
} else{
y_test <- test$price/num_scale
}
# Save unscaled
x_train_unscaled <- x_train
x_test_unscaled <- x_test
# Scale
x_train <- scale(x_train)
x_test <- scale(x_test)
# Create dfs
y_train_df <- data.frame(y_train)
x_train_df <- data.frame(x_train)
colnames(y_train_df)<-'price'
y_test_df <- data.frame(y_test)
x_test_df <- data.frame(x_test)
colnames(y_test_df)<-'price'
# Assuming x_test is your dataframe
if (drop_prev_prices) {
x_test_df <- x_test_df %>% select(-contains("same"))
x_train_df <- x_train_df %>% select(-contains("same"))
}
train_df<-cbind(x_train_df,y_train_df)
test_df<-cbind(x_test_df,y_test_df)
# Regression metrics
rmse <- function(observed, predicted) {
sqrt(mean((observed - predicted) ^ 2))
}
log_rmse <- function(observed, predicted) {
sqrt(mean((log(observed) - log(predicted)) ^ 2))
}
mape <- function(observed, predicted) {
mean(abs((predicted - observed) / observed)) * 100
}
mae <- function(observed, predicted) {
mean(abs(observed - predicted))
}
colnames(x_train_df)
[1] "X"
[2] "beds"
[3] "baths"
[4] "area"
[5] "lat"
[6] "lon"
[7] "balcony"
[8] "parking"
[9] "swimming_pool"
[10] "furnished"
[11] "emirate_n_transactions_shift1m"
[12] "emirate_avg_trans_value_shift1m"
[13] "emirate_std_trans_value_shift1m"
[14] "emirate_offplan_n_transactions_shift1m"
[15] "emirate_offplan_avg_trans_value_shift1m"
[16] "emirate_offplan_std_trans_value_shift1m"
[17] "emirate_ready_n_transactions_shift1m"
[18] "emirate_ready_avg_trans_value_shift1m"
[19] "emirate_n_transactions_shift3m"
[20] "emirate_avg_trans_value_shift3m"
[21] "emirate_std_trans_value_shift3m"
[22] "emirate_offplan_n_transactions_shift3m"
[23] "emirate_offplan_avg_trans_value_shift3m"
[24] "emirate_offplan_std_trans_value_shift3m"
[25] "emirate_ready_n_transactions_shift3m"
[26] "emirate_ready_avg_trans_value_shift3m"
[27] "emirate_n_transactions_shift6m"
[28] "emirate_avg_trans_value_shift6m"
[29] "emirate_std_trans_value_shift6m"
[30] "emirate_offplan_n_transactions_shift6m"
[31] "emirate_offplan_avg_trans_value_shift6m"
[32] "emirate_offplan_std_trans_value_shift6m"
[33] "emirate_ready_n_transactions_shift6m"
[34] "emirate_ready_avg_trans_value_shift6m"
[35] "comm_n_transactions_shift1m"
[36] "comm_avg_trans_value_shift1m"
[37] "comm_std_trans_value_shift1m"
[38] "comm_offplan_n_transactions_shift1m"
[39] "comm_offplan_avg_trans_value_shift1m"
[40] "comm_offplan_std_trans_value_shift1m"
[41] "comm_ready_n_transactions_shift1m"
[42] "comm_ready_avg_trans_value_shift1m"
[43] "comm_ready_std_trans_value_shift1m"
[44] "comm_n_transactions_shift3m"
[45] "comm_avg_trans_value_shift3m"
[46] "comm_std_trans_value_shift3m"
[47] "comm_offplan_n_transactions_shift3m"
[48] "comm_offplan_avg_trans_value_shift3m"
[49] "comm_offplan_std_trans_value_shift3m"
[50] "comm_ready_n_transactions_shift3m"
[51] "comm_ready_avg_trans_value_shift3m"
[52] "comm_ready_std_trans_value_shift3m"
[53] "comm_n_transactions_shift6m"
[54] "comm_avg_trans_value_shift6m"
[55] "comm_std_trans_value_shift6m"
[56] "comm_offplan_n_transactions_shift6m"
[57] "comm_offplan_avg_trans_value_shift6m"
[58] "comm_offplan_std_trans_value_shift6m"
[59] "comm_ready_n_transactions_shift6m"
[60] "comm_ready_avg_trans_value_shift6m"
[61] "property_type_Townhouse"
[62] "property_type_Villa"
[63] "community_Jumeirah.Beach.Residence..JBR."
[64] "community_Jumeirah.Lake.Towers..JLT."
[65] "community_Jumeirah.Village.Circle..JVC."
[66] "completion_status_constructed"
[67] "completion_status_under.construction"
[68] "metro_JumeirahLakeTowers"
[69] "metro_DubaiMarina"
[70] "metro_JumeirahBeachResidence1"
[71] "metro_Dubai.Marina.Mall"
[72] "metro_AirportTerminal"
[73] "hospital_EmiratesHospital"
[74] "hospital_AsterHospital"
[75] "market_Waitrose"
[76] "market_Carrefour"
[77] "market_Safestway"
[78] "AED_EUR_price_mean_shift1m"
[79] "AED_GBP_price_mean_shift1m"
[80] "AED_RUB_price_mean_shift1m"
[81] "AED_RUB_price_q75_shift1m"
[82] "AED_JPY_price_mean_shift1m"
[83] "AED_CNY_price_mean_shift1m"
[84] "AED_CAD_price_mean_shift1m"
[85] "AED_CAD_price_q25_shift1m"
[86] "AED_CAD_price_q75_shift1m"
[87] "AED_SAR_price_mean_shift1m"
[88] "AED_SAR_price_q25_shift1m"
[89] "AED_SAR_price_q75_shift1m"
[90] "AED_SAR_price_low_mean_shift1m"
[91] "AED_CHF_price_mean_shift1m"
[92] "USD_BTC_price_mean_shift1m"
[93] "USD_BTC_price_median_shift1m"
[94] "USD_BTC_price_q25_shift1m"
[95] "USD_BTC_price_q75_shift1m"
[96] "USD_BTC_price_high_mean_shift1m"
[97] "USD_ETH_price_mean_shift1m"
[98] "USD_ETH_price_median_shift1m"
[99] "USD_ETH_price_q25_shift1m"
[100] "USD_ETH_price_q75_shift1m"
[101] "USD_ETH_price_high_mean_shift1m"
[102] "SP_500_price_mean_shift1m"
[103] "SP_500_price_q25_shift1m"
[104] "SP_500_price_q75_shift1m"
[105] "DINV_price_mean_shift1m"
[106] "EMAAR_price_mean_shift1m"
[107] "DEYAAR_price_mean_shift1m"
[108] "AED_EUR_price_mean_shift6m"
[109] "AED_GBP_price_mean_shift6m"
[110] "AED_RUB_price_mean_shift6m"
[111] "AED_RUB_price_median_shift6m"
[112] "AED_RUB_price_q25_shift6m"
[113] "AED_RUB_price_q75_shift6m"
[114] "AED_RUB_price_low_mean_shift6m"
[115] "AED_JPY_price_mean_shift6m"
[116] "AED_CNY_price_mean_shift6m"
[117] "AED_CAD_price_mean_shift6m"
[118] "AED_SAR_price_mean_shift6m"
[119] "AED_SAR_price_median_shift6m"
[120] "AED_SAR_price_q25_shift6m"
[121] "AED_SAR_price_q75_shift6m"
[122] "AED_SAR_price_low_mean_shift6m"
[123] "AED_CHF_price_mean_shift6m"
[124] "AED_CHF_price_q25_shift6m"
[125] "USD_BTC_price_mean_shift6m"
[126] "USD_BTC_price_q25_shift6m"
[127] "USD_BTC_price_q75_shift6m"
[128] "USD_BTC_price_high_mean_shift6m"
[129] "USD_ETH_price_mean_shift6m"
[130] "USD_ETH_price_median_shift6m"
[131] "USD_ETH_price_q25_shift6m"
[132] "USD_ETH_price_q75_shift6m"
[133] "USD_ETH_price_high_mean_shift6m"
[134] "SP_500_price_mean_shift6m"
[135] "DINV_price_mean_shift6m"
[136] "EMAAR_price_mean_shift6m"
[137] "DEYAAR_price_mean_shift6m"
[138] "DEYAAR_price_q25_shift6m"
[139] "DEYAAR_price_q75_shift6m"
[140] "residential_index_shift1m"
[141] "residential_index_shift3m"
[142] "commercial_index_shift1m"
[143] "commercial_index_shift3m"
[144] "general_index_shift1m"
[145] "housing_water_electricity_gas_other.fuels_shift1m"
[146] "general_index_shift6m"
[147] "housing_water_electricity_gas_other.fuels_shift6m"
[148] "gdp_G.20"
[149] "gdp_G.7"
[150] "gdp_OECD"
[151] "gdp_USA"
[152] "gdp_construction_cost.index"
[153] "gdp_construction_non.residential"
[154] "gdp_construction"
[155] "gdp_mining_quarrying"
[156] "gdp_real_estate_activities"
[157] "gold_price_shift1m"
[158] "gold_price_change_shift1m"
[159] "petrol_price_shift1m"
[160] "petrol_price_change_shift1m"
[161] "diesel_price_shift1m"
[162] "diesel_price_change_shift1m"
[163] "gasoline_price_shift1m"
[164] "gasoline_price_change_shift1m"
[165] "gold_price_shift3m"
[166] "gold_price_change_shift3m"
[167] "petrol_price_shift3m"
[168] "petrol_price_change_shift3m"
[169] "diesel_price_shift3m"
[170] "diesel_price_change_shift3m"
[171] "gasoline_price_shift3m"
[172] "gasoline_price_change_shift3m"
[173] "address_simple_23.Marina..Dubai.Marina..Dubai"
[174] "address_simple_5242.Towers..Dubai.Marina..Dubai"
[175] "address_simple_ACES.Chateau..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[176] "address_simple_Al.Anbar.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai"
[177] "address_simple_Al.Bateen.Towers..The.Walk..Jumeirah.Beach.Residence..JBR...Dubai"
[178] "address_simple_Al.Dana.Tower..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[179] "address_simple_Al.Fattan.Marine.Towers..Jumeirah.Beach.Residence..JBR...Dubai"
[180] "address_simple_Al.Majara..Al.Majara..Dubai.Marina..Dubai"
[181] "address_simple_Al.Mesk.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai"
[182] "address_simple_Al.Murjan.Tower..Dubai.Marina.Towers..Emaar.6.Towers...Dubai.Marina..Dubai"
[183] "address_simple_Al.Sahab.Tower..Al.Sahab.Tower..Dubai.Marina..Dubai"
[184] "address_simple_Al.Seef.Tower..JLT.Cluster.U..Jumeirah.Lake.Towers..JLT...Dubai"
[185] "address_simple_Al.Shera.Tower..JLT.Cluster.E..Jumeirah.Lake.Towers..JLT...Dubai"
[186] "address_simple_Al.Waleed.Paradise..JLT.Cluster.R..Jumeirah.Lake.Towers..JLT...Dubai"
[187] "address_simple_ALCOVE..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[188] "address_simple_Amwaj..Amwaj..Jumeirah.Beach.Residence..JBR...Dubai"
[189] "address_simple_Arezzo..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[190] "address_simple_Aria.Residence..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[191] "address_simple_Armada.Tower..Armada.Towers..JLT.Cluster.P..Jumeirah.Lake.Towers..JLT...Dubai"
[192] "address_simple_Astoria.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[193] "address_simple_Attessa..Marina.Promenade..Dubai.Marina..Dubai"
[194] "address_simple_Aurora..Marina.Promenade..Dubai.Marina..Dubai"
[195] "address_simple_Autumn..Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[196] "address_simple_Avanos.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[197] "address_simple_Azure..Dubai.Marina..Dubai"
[198] "address_simple_Bahar..Bahar..Jumeirah.Beach.Residence..JBR...Dubai"
[199] "address_simple_Banyan.Tree.Residences..Jumeirah.Lake.Towers..JLT...Dubai"
[200] "address_simple_Bay.Central..Central.Tower...Bay.Central..Dubai.Marina..Dubai"
[201] "address_simple_Bay.Central..Bay.Central..Dubai.Marina..Dubai"
[202] "address_simple_Bay.Central..Dubai.Marina..Dubai"
[203] "address_simple_Beauport..Marina.Promenade..Dubai.Marina..Dubai"
[204] "address_simple_Belgravia.Heights..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[205] "address_simple_Belgravia.Square..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[206] "address_simple_Belgravia..Belgravia..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[207] "address_simple_Belgravia..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[208] "address_simple_Belgravia..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[209] "address_simple_Beverly.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[210] "address_simple_Binghatti.Gate..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[211] "address_simple_Binghatti.Gems..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[212] "address_simple_Binghatti.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[213] "address_simple_Binghatti.Jasmine..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[214] "address_simple_Binghatti.Mirage..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[215] "address_simple_Binghatti.Rose..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[216] "address_simple_Blakely.Tower..Park.Island..Dubai.Marina..Dubai"
[217] "address_simple_Bloom.Heights..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[218] "address_simple_Bloom.Towers..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[219] "address_simple_Bonaire.Tower..Park.Island..Dubai.Marina..Dubai"
[220] "address_simple_Bonnington.Tower..JLT.Cluster.J..Jumeirah.Lake.Towers..JLT...Dubai"
[221] "address_simple_Botanica.Tower..Dubai.Marina..Dubai"
[222] "address_simple_Botanica..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[223] "address_simple_Cappadocia..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[224] "address_simple_Catch.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[225] "address_simple_Cayan.Tower..Dubai.Marina..Dubai"
[226] "address_simple_Chaimaa.Avenue.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[227] "address_simple_Chaimaa.Premiere..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[228] "address_simple_Ciel.Tower..Dubai.Marina..Dubai"
[229] "address_simple_City.Apartments..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[230] "address_simple_Concorde.Tower..JLT.Cluster.H..Jumeirah.Lake.Towers..JLT...Dubai"
[231] "address_simple_Continental.Tower..Dubai.Marina..Dubai"
[232] "address_simple_Crystal.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[233] "address_simple_DAMAC.Ghalia..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai"
[234] "address_simple_Damac.Heights..Dubai.Marina..Dubai"
[235] "address_simple_Dar.Al.Jawhara.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[236] "address_simple_DEC.Tower..DEC.Towers..Dubai.Marina..Dubai"
[237] "address_simple_DEC.Towers..Dubai.Marina..Dubai"
[238] "address_simple_Diamond.Views..Diamond.Views..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[239] "address_simple_Dorra.Bay..Dubai.Marina..Dubai"
[240] "address_simple_Dream.Tower..Dream.Towers..Dubai.Marina..Dubai"
[241] "address_simple_Dream.Towers..Dubai.Marina..Dubai"
[242] "address_simple_Dubai.Arch.Tower..JLT.Cluster.G..Jumeirah.Lake.Towers..JLT...Dubai"
[243] "address_simple_Dubai.Marina..Dubai"
[244] "address_simple_Dubai.Star.Tower..JLT.Cluster.L..Jumeirah.Lake.Towers..JLT...Dubai"
[245] "address_simple_Dusit.Princess.Rijas..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai"
[246] "address_simple_Eaton.Place..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[247] "address_simple_Elite.Residence..Dubai.Marina..Dubai"
[248] "address_simple_Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[249] "address_simple_Escan.Marina.Tower..Dubai.Marina..Dubai"
[250] "address_simple_Fairfield.Tower..Park.Island..Dubai.Marina..Dubai"
[251] "address_simple_FIVE.Jumeirah.Village..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[252] "address_simple_Florence..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[253] "address_simple_Fortunato..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[254] "address_simple_Gardenia.Residency..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[255] "address_simple_Gardenia..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[256] "address_simple_Global.Lake.View..JLT.Cluster.E..Jumeirah.Lake.Towers..JLT...Dubai"
[257] "address_simple_Goldcrest.Executive..JLT.Cluster.C..Jumeirah.Lake.Towers..JLT...Dubai"
[258] "address_simple_Goldcrest.Views..JLT.Cluster.J..Jumeirah.Lake.Towers..JLT...Dubai"
[259] "address_simple_Goldcrest.Views..JLT.Cluster.V..Jumeirah.Lake.Towers..JLT...Dubai"
[260] "address_simple_Green.Lakes..JLT.Cluster.S..Green.Lake.Towers...Jumeirah.Lake.Towers..JLT...Dubai"
[261] "address_simple_Hanover.Square..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[262] "address_simple_Harrington.House..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[263] "address_simple_Haven.Villas..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[264] "address_simple_Hyati.Avenue..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[265] "address_simple_Hyati.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[266] "address_simple_Icon.Tower..JLT.Cluster.L..Jumeirah.Lake.Towers..JLT...Dubai"
[267] "address_simple_Icon.Tower..JLT.Cluster.M..Jumeirah.Lake.Towers..JLT...Dubai"
[268] "address_simple_Indigo.Tower..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai"
[269] "address_simple_Iris.Blue..Dubai.Marina..Dubai"
[270] "address_simple_Joya.Verde.Residences..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[271] "address_simple_Jumeirah.Bay.X1..JLT.Cluster.X..Jumeirah.Bay.Towers...Jumeirah.Lake.Towers..JLT...Dubai"
[272] "address_simple_Jumeirah.Beach.Residence..JBR...Dubai"
[273] "address_simple_Jumeirah.Gate.Tower..The.Address.Residences.Jumeirah.Resort.and.Spa..Jumeirah.Beach.Residence..JBR...Dubai"
[274] "address_simple_Jumeirah.Lake.Towers..JLT...Dubai"
[275] "address_simple_Jumeirah.Living.Marina.Gate..Marina.Gate..Dubai.Marina..Dubai"
[276] "address_simple_Jumeirah.Village.Circle..JVC...Dubai"
[277] "address_simple_JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[278] "address_simple_JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[279] "address_simple_Kensington.Manor..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[280] "address_simple_KG.Tower..Dubai.Marina..Dubai"
[281] "address_simple_Knightsbridge.Court..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[282] "address_simple_La.Riviera.Apartments..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[283] "address_simple_La.Riviera.Azure..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[284] "address_simple_La.Riviera.Estate..La.Riviera.Estates..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[285] "address_simple_La.Riviera.Estates..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[286] "address_simple_La.Riviera..Dubai.Marina..Dubai"
[287] "address_simple_La.Vie..Jumeirah.Beach.Residence..JBR...Dubai"
[288] "address_simple_Laguna.Tower..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai"
[289] "address_simple_Lake.City.Tower..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai"
[290] "address_simple_Lake.Point.Tower..JLT.Cluster.N..Jumeirah.Lake.Towers..JLT...Dubai"
[291] "address_simple_Lake.Shore.Tower..JLT.Cluster.Y..Jumeirah.Lake.Towers..JLT...Dubai"
[292] "address_simple_Lake.Terrace..JLT.Cluster.D..Jumeirah.Lake.Towers..JLT...Dubai"
[293] "address_simple_Lake.View.Tower..JLT.Cluster.B..Jumeirah.Lake.Towers..JLT...Dubai"
[294] "address_simple_Lakeside.Residence..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai"
[295] "address_simple_Lavender..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[296] "address_simple_Laya.Mansion..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[297] "address_simple_Laya.Residences..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[298] "address_simple_Le.Grand.Chateau..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[299] "address_simple_Le.Grand.Chateau..Le.Grand.Chateau..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[300] "address_simple_LIV.Marina..Dubai.Marina..Dubai"
[301] "address_simple_LIV.Residence..Dubai.Marina..Dubai"
[302] "address_simple_Living.Garden..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[303] "address_simple_LOCI.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[304] "address_simple_Lolena.Residence..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[305] "address_simple_Lucky.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[306] "address_simple_Luma21..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[307] "address_simple_Madina.Tower..JLT.Cluster.O..Jumeirah.Lake.Towers..JLT...Dubai"
[308] "address_simple_Mag.218.Tower..Dubai.Marina..Dubai"
[309] "address_simple_Mag.Tower..JLT.Cluster.R..Jumeirah.Lake.Towers..JLT...Dubai"
[310] "address_simple_Magnolia..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[311] "address_simple_Manchester.Tower..Dubai.Marina..Dubai"
[312] "address_simple_Maple..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[313] "address_simple_Marina.Arcade.Tower..Dubai.Marina..Dubai"
[314] "address_simple_Marina.Crown..Dubai.Marina..Dubai"
[315] "address_simple_Marina.Diamond..Marina.Diamonds..Dubai.Marina..Dubai"
[316] "address_simple_Marina.Gate..Marina.Gate..Dubai.Marina..Dubai"
[317] "address_simple_Marina.Heights.Tower..Dubai.Marina..Dubai"
[318] "address_simple_Marina.Opal.Tower..Dubai.Marina..Dubai"
[319] "address_simple_Marina.Pearl..Dubai.Marina..Dubai"
[320] "address_simple_Marina.Pinnacle..Dubai.Marina..Dubai"
[321] "address_simple_Marina.Quays..Marina.Quays..Dubai.Marina..Dubai"
[322] "address_simple_Marina.Residence..Marina.Residence..Dubai.Marina..Dubai"
[323] "address_simple_Marina.Terrace..Dubai.Marina..Dubai"
[324] "address_simple_Marina.Tower..Dubai.Marina..Dubai"
[325] "address_simple_Marina.View.Tower..Marina.View.Tower..Dubai.Marina..Dubai"
[326] "address_simple_Marina.Wharf..Marina.Wharf..Dubai.Marina..Dubai"
[327] "address_simple_Marwa.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[328] "address_simple_Masaar.Residence..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[329] "address_simple_MBL.Residences..JLT.Cluster.K..Jumeirah.Lake.Towers..JLT...Dubai"
[330] "address_simple_MBL.Royal..JLT.Cluster.K..Jumeirah.Lake.Towers..JLT...Dubai"
[331] "address_simple_MILANO.by.Giovanni.Boutique.Suites..JVC.District.17..Jumeirah.Village.Circle..JVC...Dubai"
[332] "address_simple_Mulberry..Emirates.Gardens.2..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[333] "address_simple_Murjan..Murjan..Jumeirah.Beach.Residence..JBR...Dubai"
[334] "address_simple_New.Dubai.Gate..JLT.Cluster.A..Jumeirah.Lake.Towers..JLT...Dubai"
[335] "address_simple_New.Dubai.Gate..JLT.Cluster.Q..Jumeirah.Lake.Towers..JLT...Dubai"
[336] "address_simple_No..9..Dubai.Marina..Dubai"
[337] "address_simple_Noora.Residence..Noora.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[338] "address_simple_O2.Residence..JLT.Cluster.O..Jumeirah.Lake.Towers..JLT...Dubai"
[339] "address_simple_O2.Tower..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[340] "address_simple_Ocean.Heights..Dubai.Marina..Dubai"
[341] "address_simple_Orchidea.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[342] "address_simple_Orra.Marina..Dubai.Marina..Dubai"
[343] "address_simple_Oxford.Boulevard..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[344] "address_simple_Oxford.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[345] "address_simple_Oxford.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[346] "address_simple_Oxford..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[347] "address_simple_Paloma..Marina.Promenade..Dubai.Marina..Dubai"
[348] "address_simple_Pantheon.Boulevard..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[349] "address_simple_Pantheon.Elysee..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[350] "address_simple_Pantheon.Elysee..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[351] "address_simple_Pantheon.Elysee..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[352] "address_simple_Park.View.Tower..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[353] "address_simple_Park.Vista..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[354] "address_simple_Plaza.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[355] "address_simple_Plazzo.Heights..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[356] "address_simple_Princess.Tower..Dubai.Marina..Dubai"
[357] "address_simple_Pulse.Smart.Residence..JVC.District.11..Jumeirah.Village.Circle..JVC...Dubai"
[358] "address_simple_Reef.Residence..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[359] "address_simple_Regina.Tower..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[360] "address_simple_Rigel.Apartments..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[361] "address_simple_Rimal..Rimal..Jumeirah.Beach.Residence..JBR...Dubai"
[362] "address_simple_Rose..Emirates.Gardens..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[363] "address_simple_Roxana.Residence..Roxana.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[364] "address_simple_Roxana.Residences..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[365] "address_simple_Saba.Tower..JLT.Cluster.Q..Jumeirah.Lake.Towers..JLT...Dubai"
[366] "address_simple_Sadaf..Sadaf..Jumeirah.Beach.Residence..JBR...Dubai"
[367] "address_simple_Samana.Waves..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[368] "address_simple_Sandoval.Garden..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[369] "address_simple_Sanibel.Tower..Park.Island..Dubai.Marina..Dubai"
[370] "address_simple_Se7en.City..Jumeirah.Lake.Towers..JLT...Dubai"
[371] "address_simple_Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[372] "address_simple_Serenity.Lakes..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[373] "address_simple_Shamal.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[374] "address_simple_Shamal.Residences..Shamal.Residences..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[375] "address_simple_Shamal.Waves..JVC.District.14..Jumeirah.Village.Circle..JVC...Dubai"
[376] "address_simple_Shams..Shams..Jumeirah.Beach.Residence..JBR...Dubai"
[377] "address_simple_Shemara..Marina.Promenade..Dubai.Marina..Dubai"
[378] "address_simple_Siena..Tuscan.Residence..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[379] "address_simple_Signature.Livings..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[380] "address_simple_Silverene.Tower..Silverene..Dubai.Marina..Dubai"
[381] "address_simple_Skyview.Tower..Dubai.Marina..Dubai"
[382] "address_simple_Sobha.Daffodil..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[383] "address_simple_Sparkle.Tower..Sparkle.Towers..Dubai.Marina..Dubai"
[384] "address_simple_Sparkle.Towers..Dubai.Marina..Dubai"
[385] "address_simple_Spica.Residential..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[386] "address_simple_Stella.Maris..Dubai.Marina..Dubai"
[387] "address_simple_Studio.One.Tower..Dubai.Marina..Dubai"
[388] "address_simple_Sulafa.Tower..Dubai.Marina..Dubai"
[389] "address_simple_Summer..Seasons.Community..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[390] "address_simple_TFG.Marina.Hotel..Dubai.Marina..Dubai"
[391] "address_simple_The.Address.Dubai.Marina..Mall.Hotel...Dubai.Marina..Dubai"
[392] "address_simple_The.Address.Residences.Jumeirah.Resort.and.Spa..Jumeirah.Beach.Residence..JBR...Dubai"
[393] "address_simple_The.Belvedere..Dubai.Marina..Dubai"
[394] "address_simple_The.Jewel.Tower..The.Jewels..Dubai.Marina..Dubai"
[395] "address_simple_The.Manhattan..JVC.District.10..Jumeirah.Village.Circle..JVC...Dubai"
[396] "address_simple_The.Palladium..JLT.Cluster.C..Jumeirah.Lake.Towers..JLT...Dubai"
[397] "address_simple_The.Plaza.Residences..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[398] "address_simple_The.Point..Dubai.Marina..Dubai"
[399] "address_simple_The.Portman..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[400] "address_simple_The.Royal.Oceanic..Dubai.Marina..Dubai"
[401] "address_simple_The.Sloane..JVC.District.12..Jumeirah.Village.Circle..JVC...Dubai"
[402] "address_simple_The.Square.Tower..JVC.District.13..Jumeirah.Village.Circle..JVC...Dubai"
[403] "address_simple_The.Torch..Dubai.Marina..Dubai"
[404] "address_simple_The.Waves.Tower..The.Waves..Dubai.Marina..Dubai"
[405] "address_simple_The.Zen..Dubai.Marina..Dubai"
[406] "address_simple_Time.Place..Dubai.Marina..Dubai"
[407] "address_simple_Tower..JVC.District.18..Jumeirah.Village.Circle..JVC...Dubai"
[408] "address_simple_Trident.Bayside..Dubai.Marina..Dubai"
[409] "address_simple_Trident.Grand.Residence..Dubai.Marina..Dubai"
[410] "address_simple_Trident.Marinascape.Avant.Tower..Marinascape..Dubai.Marina..Dubai"
[411] "address_simple_V3.Tower..JLT.Cluster.V..Jumeirah.Lake.Towers..JLT...Dubai"
[412] "address_simple_Vida.Residences.Dubai.Marina..Dubai.Marina..Dubai"
[413] "address_simple_West.Avenue..Dubai.Marina..Dubai"
[414] "address_simple_Wind.Tower..Wind.Towers..Jumeirah.Lake.Towers..JLT...Dubai"
[415] "address_simple_Yacht.Bay..Dubai.Marina..Dubai"
[416] "address_simple_Zaya.Hameni..JVC.District.15..Jumeirah.Village.Circle..JVC...Dubai"
[417] "address_simple_Zumurud.Tower..Dubai.Marina..Dubai"
[418] "subdistrict_Bay.Central"
[419] "subdistrict_Dubai.Marina"
[420] "subdistrict_Dubai.Marina.Towers..Emaar.6.Towers."
[421] "subdistrict_Emirates.Gardens"
[422] "subdistrict_Emirates.Gardens.2"
[423] "subdistrict_JLT.Cluster.A"
[424] "subdistrict_JLT.Cluster.C"
[425] "subdistrict_JLT.Cluster.D"
[426] "subdistrict_JLT.Cluster.E"
[427] "subdistrict_JLT.Cluster.J"
[428] "subdistrict_JLT.Cluster.K"
[429] "subdistrict_JLT.Cluster.L"
[430] "subdistrict_JLT.Cluster.O"
[431] "subdistrict_JLT.Cluster.Q"
[432] "subdistrict_JLT.Cluster.R"
[433] "subdistrict_JLT.Cluster.V"
[434] "subdistrict_Jumeirah.Beach.Residence..JBR."
[435] "subdistrict_Jumeirah.Lake.Towers..JLT."
[436] "subdistrict_Jumeirah.Village.Circle..JVC."
[437] "subdistrict_JVC.District.10"
[438] "subdistrict_JVC.District.11"
[439] "subdistrict_JVC.District.12"
[440] "subdistrict_JVC.District.13"
[441] "subdistrict_JVC.District.14"
[442] "subdistrict_JVC.District.15"
[443] "subdistrict_JVC.District.18"
[444] "subdistrict_Marina.Gate"
[445] "subdistrict_Marina.Promenade"
[446] "subdistrict_Park.Island"
[447] "subdistrict_Seasons.Community"
[448] "subdistrict_Tuscan.Residence"
[449] "lat_cuts_lat_.25.04733.25.04859."
[450] "lat_cuts_lat_.25.04859.25.05027."
[451] "lat_cuts_lat_.25.05027.25.05093."
[452] "lat_cuts_lat_.25.05093.25.05201."
[453] "lat_cuts_lat_.25.05201.25.05356."
[454] "lat_cuts_lat_.25.05356.25.05443."
[455] "lat_cuts_lat_.25.05443.25.05613."
[456] "lat_cuts_lat_.25.05613.25.05639."
[457] "lat_cuts_lat_.25.05639.25.05731."
[458] "lat_cuts_lat_.25.05731.25.05836."
[459] "lat_cuts_lat_.25.05836.25.05983."
[460] "lat_cuts_lat_.25.05983.25.06259."
[461] "lat_cuts_lat_.25.06259.25.06321."
[462] "lat_cuts_lat_.25.06321.25.06367."
[463] "lat_cuts_lat_.25.06367.25.06551."
[464] "lat_cuts_lat_.25.06551.25.06645."
[465] "lat_cuts_lat_.25.06645.25.06707."
[466] "lat_cuts_lat_.25.0671.25.06769."
[467] "lat_cuts_lat_.25.06769.25.06831."
[468] "lat_cuts_lat_.25.06831.25.06853."
[469] "lat_cuts_lat_.25.06853.25.06995."
[470] "lat_cuts_lat_.25.06995.25.07077."
[471] "lat_cuts_lat_.25.07077.25.07104."
[472] "lat_cuts_lat_.25.07104.25.07147."
[473] "lat_cuts_lat_.25.07147.25.07222."
[474] "lat_cuts_lat_.25.07222.25.07224."
[475] "lat_cuts_lat_.25.07224.25.07238."
[476] "lat_cuts_lat_.25.07238.25.0729."
[477] "lat_cuts_lat_.25.0729.25.07433."
[478] "lat_cuts_lat_.25.07433.25.0753."
[479] "lat_cuts_lat_.25.0753.25.07628."
[480] "lat_cuts_lat_.25.07628.25.07651."
[481] "lat_cuts_lat_.25.07651.25.07744."
[482] "lat_cuts_lat_.25.07744.25.07829."
[483] "lat_cuts_lat_.25.07829.25.07914."
[484] "lat_cuts_lat_.25.07914.25.07982."
[485] "lat_cuts_lat_.25.07982.25.08039."
[486] "lat_cuts_lat_.25.08039.25.08139."
[487] "lat_cuts_lat_.25.08139.25.08209."
[488] "lat_cuts_lat_.25.08209.25.08345."
[489] "lat_cuts_lat_.25.08345.25.08515."
[490] "lat_cuts_lat_.25.08515.25.08644."
[491] "lat_cuts_lat_.25.08652.25.08721."
[492] "lat_cuts_lat_.25.08721.25.0884."
[493] "lat_cuts_lat_.25.0887.25.08962."
[494] "lat_cuts_lat_.25.08962.25.09068."
[495] "lat_cuts_lat_.24.49206.25.04733."
[496] "lon_cuts_lon_.55.12635.55.12642."
[497] "lon_cuts_lon_.55.12642.55.1289."
[498] "lon_cuts_lon_.55.1289.55.12925."
[499] "lon_cuts_lon_.55.12925.55.1318."
[500] "lon_cuts_lon_.55.1318.55.13244."
[501] "lon_cuts_lon_.55.13244.55.13343."
[502] "lon_cuts_lon_.55.13343.55.1343."
[503] "lon_cuts_lon_.55.1343.55.13566."
[504] "lon_cuts_lon_.55.13566.55.13625."
[505] "lon_cuts_lon_.55.13625.55.13707."
[506] "lon_cuts_lon_.55.13707.55.13786."
[507] "lon_cuts_lon_.55.13786.55.13829."
[508] "lon_cuts_lon_.55.13829.55.13888."
[509] "lon_cuts_lon_.55.13888.55.13976."
[510] "lon_cuts_lon_.55.13976.55.14027."
[511] "lon_cuts_lon_.55.14027.55.1412."
[512] "lon_cuts_lon_.55.1412.55.14185."
[513] "lon_cuts_lon_.55.14185.55.1425."
[514] "lon_cuts_lon_.55.1425.55.1445."
[515] "lon_cuts_lon_.55.1445.55.14481."
[516] "lon_cuts_lon_.55.14481.55.14534."
[517] "lon_cuts_lon_.55.14534.55.14582."
[518] "lon_cuts_lon_.55.14582.55.147."
[519] "lon_cuts_lon_.55.14736.55.14748."
[520] "lon_cuts_lon_.55.14748.55.14828."
[521] "lon_cuts_lon_.55.14828.55.1491."
[522] "lon_cuts_lon_.55.14986.55.15396."
[523] "lon_cuts_lon_.55.15396.55.1979."
[524] "lon_cuts_lon_.55.1979.55.19938."
[525] "lon_cuts_lon_.55.19938.55.20009."
[526] "lon_cuts_lon_.55.20009.55.20124."
[527] "lon_cuts_lon_.55.20124.55.20205."
[528] "lon_cuts_lon_.55.20205.55.20344."
[529] "lon_cuts_lon_.55.20344.55.20391."
[530] "lon_cuts_lon_.55.20391.55.20506."
[531] "lon_cuts_lon_.55.20506.55.20634."
[532] "lon_cuts_lon_.55.20634.55.20729."
[533] "lon_cuts_lon_.55.20729.55.20792."
[534] "lon_cuts_lon_.55.20792.55.20902."
[535] "lon_cuts_lon_.55.20902.55.21209."
[536] "lon_cuts_lon_.55.21209.55.21408."
[537] "lon_cuts_lon_.55.21408.55.21773."
[538] "lon_cuts_lon_.55.21773.55.22097."
[539] "lon_cuts_lon_.54.39476.55.12495."
# Calculate statistics for y_train
n_obs_train <- length(y_train_df)
mean_train <- mean(y_train_df)
Warning: argument is not numeric or logical: returning NA
quartiles_train <- quantile(as.matrix(y_train_df), probs = c(0.25, 0.5, 0.75))
# Calculate statistics for y_test
n_obs_test <- length(y_test_df)
mean_test <- mean(y_test_df)
Warning: argument is not numeric or logical: returning NA
quartiles_test <- quantile(as.matrix(y_test_df), probs = c(0.25, 0.5, 0.75))
# Create the data frame with the statistics
stats_table <- data.frame(
Dataset = c("y_train", "y_test"),
Observations = c(n_obs_train, n_obs_test),
Mean = c(mean_train, mean_test),
`1st Quartile` = c(quartiles_train[1], quartiles_test[1]),
Median = c(quartiles_train[2], quartiles_test[2]),
`3rd Quartile` = c(quartiles_train[3], quartiles_test[3])
)
stats_table_long <- stats_table %>%
pivot_longer(cols = -Dataset, names_to = "Metric", values_to = "Value")
# Spread the long format table to wide format with one column for y_train and one for y_test
stats_table_wide <- stats_table_long %>%
pivot_wider(names_from = Dataset, values_from = Value)
# Create a rotated LaTeX formatted table
output_stats <- 0
if (output_stats == 1) {
kable(stats_table_wide, format = "latex", booktabs = TRUE, caption = "Descriptive Statistics of y_train and y_test", row.names = FALSE) %>%
kable_styling(full_width = FALSE, position = "center", latex_options = "striped") %>%
row_spec(0, bold = TRUE, color = "white", background = "#56B4E9")
}
x_test_df[is.na(x_test_df)] <- 0
x_train_df[is.na(x_train_df)] <- 0
cat(dim(x_train_df))
23432 539
# Fit model
fit.lasso = cv.glmnet(x=as.matrix(x_train_df), y=y_train, nfolds=10)
regression_metrics <- function(model, data, y_real, num_scale, y_wout_log) {
pred <- predict(model, newx = as.matrix(data), s = fit.lasso$lambda.min, type = "response")
if (log_price) {
pred <- 10**pred
y_real <- y_wout_log
}
rmse_value <- rmse(y_real, pred)*num_scale
mape <- mape(y_real, pred)
mae <- mae(y_real, pred)*num_scale
cat('\nRMSE:', rmse_value, 'MAPE:', mape, 'MAE:', mae)
return(list(rmse=rmse_value, mape=mape, mae=mae))
}
# TEST
q <- regression_metrics(fit.lasso, x_test_df, y_test, num_scale, y_test_orig)
RMSE: 368379.1 MAPE: 14.39842 MAE: 191448
# TRAIN
q <- regression_metrics(fit.lasso, x_train_df, y_train, num_scale, y_train_orig)
RMSE: 227757.2 MAPE: 10.6859 MAE: 145604.1
# Group prefixes for regression output
coef_table <- coef_table %>%
mutate(prefix = case_when(
str_detect(Variable, "same_address_beds_area") ~ "Same address/beds/area",
str_detect(Variable, "same_address_beds_price") ~ "Same address/beds",
str_detect(Variable, "same_community_ptype") ~ "Same community/prop. type",
str_detect(Variable, "same_community_beds") ~ "Same community/beds",
str_detect(Variable, "same_community_area") ~ "Same community/area",
str_detect(Variable, "comm_avg_trans_value") ~ "Comm avg. trans value",
str_detect(Variable, "comm_offplan") ~ "Comm offplan",
str_detect(Variable, "comm_ready") ~ "Comm ready",
str_detect(Variable, "AED") ~ "AED exchange rate",
str_detect(Variable, "USD_") ~ "USD Crypto exchange rates",
str_detect(Variable, "same_ptype") ~ "Same property type",
str_detect(Variable, "area") ~ "Area",
str_detect(Variable, "furnished") ~ "Furnished",
str_detect(Variable, "baths") ~ "Baths",
str_detect(Variable, "balcony") ~ "Balcony",
str_detect(Variable, "swimming_pool") ~ "Swimming pool",
str_detect(Variable, "parking") ~ "Parking",
str_detect(Variable, "same_beds_") ~ "Same beds",
str_detect(Variable, "same_area_") ~ "Same area",
str_detect(Variable, "same_address") ~ "Same address",
str_detect(Variable, "metro") ~ "Metro",
str_detect(Variable, "market") ~ "Market",
str_detect(Variable, "hospital") ~ "Hospital",
str_detect(Variable, "community") ~ "Community",
str_detect(Variable, "(Intercept)") ~ "(Intercept)",
TRUE ~ "Misc" # For all other cases
))
print(deciles)
0% 10% 20% 30% 40% 50% 60% 70%
4.457312e-03 1.995456e+00 3.995255e+00 6.094792e+00 8.623564e+00 1.113647e+01 1.402322e+01 1.733744e+01
80% 90% 100%
2.207744e+01 2.976463e+01 1.601915e+02
# Prepare data for graphs
test_graph <- data.frame(x_test_unscaled)
test_graph$perc_error <- compare_df$perc_error
test_graph$error <- compare_df$error
test_graph$price <- compare_df$y_test
test_graph
<!-- rnb-source-end -->
<!-- rnb-output-begin eyJkYXRhIjoiRXJyb3I6IGF0dGVtcHQgdG8gdXNlIHplcm8tbGVuZ3RoIHZhcmlhYmxlIG5hbWVcbiJ9 -->
Error: attempt to use zero-length variable name
<!-- rnb-output-end -->
<!-- rnb-chunk-end -->
<!-- rnb-chunk-begin -->
<!-- rnb-source-begin eyJkYXRhIjoiYGBgclxuIyBHcmFwaCBhYnMgZXJyb3JcbnBsb3RfYWJzX2Vycm9yPC0gZ2dwbG90KHRlc3RfZ3JhcGgsIGFlcyh4ID0gcHJpY2UsIHkgPSBlcnJvcikpICtcbiAgdGhlbWVfbWluaW1hbCgpICtcbiAgZ2VvbV9wb2ludChjb2xvciA9ICcjMWY3N2I0JyAsc2l6ZSA9IDAuNSkgKyAgIyBTY2F0dGVyIHBsb3QgcG9pbnRzXG4gIHhsYWIoXCJQcmljZVwiKSArXG4gIHlsYWIoXCJBYnNvbHV0ZSBFcnJvclwiKSArIFxuICAgIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj1cIm5vbmVcIixcbiAgICAgICAgdGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gMTYpLCAgIyBBZGp1c3QgdGhlIGZvbnQgc2l6ZSBoZXJlXG4gICAgICAgIGF4aXMudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2KSwgICMgQWRqdXN0IHRoZSB0aXRsZSBmb250IHNpemVcbiAgICAgICAgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMCkpICsgICMgQWRqdXN0IHRoZSBheGlzIHRleHQgZm9udCBzaXplXG4gIHNjYWxlX3hfY29udGludW91cyhsYWJlbHMgPSBzY2FsZXM6OmNvbW1hKSBcbnBsb3RfYWJzX2Vycm9yXG5gYGAifQ== -->
```r
# Graph abs error
plot_abs_error<- ggplot(test_graph, aes(x = price, y = error)) +
theme_minimal() +
geom_point(color = '#1f77b4' ,size = 0.5) + # Scatter plot points
xlab("Price") +
ylab("Absolute Error") +
theme(legend.position="none",
text = element_text(size = 16), # Adjust the font size here
axis.title = element_text(size = 16), # Adjust the title font size
axis.text = element_text(size = 10)) + # Adjust the axis text font size
scale_x_continuous(labels = scales::comma)
plot_abs_error
# Graph prediction error
#Prepare data
test_graph_dt <- test_graph %>% as.data.table
test_graph_dt[, community := 'Dubai Marina']
test_graph_dt<- test_graph_dt %>%
.[community_Jumeirah.Beach.Residence..JBR.==T, community := 'Jumeirah Beach \n Residence (JBR)'] %>%
.[community_Jumeirah.Lake.Towers..JLT.==T, community := 'Jumeirah Lake \n Towers (JLT)'] %>%
.[community_Jumeirah.Village.Circle..JVC.==T, community := 'Jumeirah Village \n Circle (JVC)']
# Produce plot
plot_perc_error_community <- ggplot(test_graph_dt, aes(y=community, x=perc_error, color=community)) +
geom_violin(aes(fill = community,
fill = after_scale(colorspace::lighten(fill, .2))),
draw_quantiles = c(0.05, 0.25, 0.5, 0.75, 0.95),
size = 0.2, scale='width', colour = "black") +
theme_minimal() +
theme(legend.position="none",
text = element_text(size = 16), # Adjust the font size here
axis.title = element_text(size = 16), # Adjust the title font size
axis.text = element_text(size = 10), # Adjust the axis text font size
axis.ticks = element_line(size = 0.8),
axis.title.y.left=element_text(color="black", size=14),
axis.text.y.left=element_text(color="black", size=12),
axis.title.y.right=element_text(color="black", size=14),
axis.text.y.right=element_text(color="black", size=14),
axis.text.x=element_text(size=12),
axis.title.x=element_text(size=16),
plot.title = element_text(hjust = 0.5, size = 16, face = "bold")) + # Adjust the axis ticks size
scale_x_continuous(labels = scales::comma) +
labs(y='', x="Prediction Error (%)")
plot_perc_error_community
# Fit model
fit.bayesreg <- modelSelection(price ~ ., data=train_df, priorCoef=zellnerprior(taustd = 1), priorDelta=modelbbprior(1,1), niter=30000)
Greedy searching posterior mode... Done.
Running Gibbs sampler......
# Convergence checks
margppest= matrix(NA,nrow=nrow(fit.bayesreg$postSample),ncol=ncol(fit.bayesreg$postSample))
for (j in 1:ncol(fit.bayesreg$postSample)) {
margppest[,j]= cumsum(fit.bayesreg$postSample[,j])/(1:nrow(fit.bayesreg$postSample))
}
par(mar=c(4,5,.1,.1), cex.lab=1, cex.axis=1)
plot(margppest[,1], type='l', ylim=c(0,1), xlab='Gibbs iteration', ylab='Estimated P(gamma_j=1 | y)')
for (j in 2:ncol(margppest)) lines(margppest[,j])
bayes_pred= predict(fit.bayesreg, data = x_train_df, newdata =x_test_df)
# RMSE
rmse_value <- rmse(y_test, bayes_pred)
print(rmse_value) # 211412.2
# Calculate MAPE
mape <- mean(abs((y_test - bayes_pred) / y_test)) * 100
print(mape)
# Prepare data
test_graph$bayes_pred_25 <- bayes_pred[,2]
test_graph$bayes_pred_975 <- bayes_pred[,3]
test_graph$bayes_pred <- bayes_pred[,1]
test_graph$perc_error_bayes <- abs((test_graph$price - test_graph$bayes_pred) / test_graph$price) * 100
test_graph$perc_error_bayes <- (test_graph$price - test_graph$bayes_pred)
# New column to determine color
test_graph$color <- ifelse(test_graph$price > test_graph$bayes_pred_25 & test_graph$price < test_graph$bayes_pred_975, "#1f77b4", "red")
# Graph percentage error bayes with color condition
plot_perc_error_bayes <- ggplot(test_graph, aes(x = price, y = perc_error_bayes, color = color)) +
theme_minimal() +
geom_point(size = 0.5) + # Scatter plot points
xlab("Price") +
ylab("Percentage Error") +
theme(legend.position = "none",
text = element_text(size = 16), # Adjust the font size here
axis.title = element_text(size = 16), # Adjust the title font size
axis.text = element_text(size = 10)) + # Adjust the axis text font size
scale_x_continuous(labels = scales::comma) +
scale_color_identity() # Use the actual colors specified in the data frame
plot_perc_error_bayes
freq_table_colour<- table(test_graph$color)
freq_table_colour
#Prepare data
test_graph_sorted<- test_graph %>% arrange(price) %>% mutate(obs = seq(1:length(price)))
test_graph_dt_2 <- test_graph_sorted %>% as.data.table
test_graph_dt_2[, community := 'Dubai Marina']
test_graph_dt_2<- test_graph_dt_2 %>%
.[community_Jumeirah.Beach.Residence..JBR.==T, community := 'Jumeirah Beach \n Residence (JBR)'] %>%
.[community_Jumeirah.Lake.Towers..JLT.==T, community := 'Jumeirah Lake \n Towers (JLT)'] %>%
.[community_Jumeirah.Village.Circle..JVC.==T, community := 'Jumeirah Village \n Circle (JVC)']
# Assuming 'community' is the column name that contains the community information
filtered_data <- test_graph_dt_2 %>%
filter(grepl("JVC", community))
# Define colors for actual and prediction points
colors <- c('actual' = 'blue', 'prediction' = 'red')
# Create the plot
ggplot(filtered_data, aes(x = seq_along(price), y = price)) +
geom_point(aes(color = 'actual'), size = 0.1) +
geom_point(aes(y = bayes_pred, color = 'prediction'), size = 0.1) +
geom_errorbar(aes(ymin = bayes_pred_25, ymax = bayes_pred_975), width = 0.01) +
labs(x = "Observation number (ranked)",
y = "Price and Bayesian Prediction",
color = "Legend") +
scale_color_manual(values = colors) +
ggtitle('Credible Intervals for Predictions with BMA')
coef(fit.bayesreg)
coef(fit.bayesreg)[order(coef(fit.bayesreg)[,4], decreasing = TRUE),]